#include <stdio.h>

int main() {
    // 将a的值保留最后一个有效字节，其余的字节取补。
    int a = 0x87654321;
    // 注意异或的作用：1用来取反，0用来保留原值
    // 0xff的取反，以32位整数表示为0xffffff00
    //  0x87654321 
    //  ^
    //  0xffffff00 
    //= 0x789abc21
    // 如上所示，1用来取反得到补值，0用来保留原值，从而实现保留最后一个有效字节，其余字节取补的目的。
    int b = a^~0xff;
    printf("a = 0x%x\n", a);
    printf("a = 0x%x\n", b); // 输出a的值应为 0x789abc21
}